# 编译器设置
CC := g++
CFLAGS := -g -Wall -Wextra -std=c++20
LDFLAGS := -L/usr/local/lib -lssl -lcrypto -lboost_system -lboost_charconv
TARGET := AiServer 

# 目录配置
SRC_DIR := Server
BUILD_DIR := Build

# 自动获取源文件列表
SRCS := $(wildcard $(SRC_DIR)/*.cpp)
OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SRCS))
DEPS := $(OBJS:.o=.d)

# 进度计数器
TOTAL_FILES := $(words $(SRCS))
COUNT := 0

# 默认目标
all: | $(BUILD_DIR)
	@$(MAKE) $(TARGET)
	@echo "\n=== 构建完成: $(TARGET) ==="

# 最终目标链接
$(TARGET): $(OBJS)
	@echo "\n=== 正在链接可执行文件 ==="
	$(CC) $(OBJS) -o $(TARGET) $(LDFLAGS)
	@echo "=== 已创建可执行文件: $@ ==="

# 编译规则（带进度显示）
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp | $(BUILD_DIR)
	$(eval COUNT=$(shell echo $$(($(COUNT)+1))))
	@echo "($(COUNT)) 正在编译 $<"
	$(CC) $(CFLAGS) -c $< -o $@

# 创建构建目录
$(BUILD_DIR):
	@mkdir -p $@
	@echo "=== 创建构建目录: $@ ==="

# 清理规则
clean:
	rm -rf $(BUILD_DIR)
	@echo "=== 已清理构建文件 ==="

# 包含自动生成的依赖关系
-include $(DEPS)

.PHONY: all clean
